﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;

// Created libraries
using FrbaBus.Core;


namespace FrbaBus.Abm_Ciudad
{
    public partial class Ciudad : Form
    {
        public Ciudad()
        {
            InitializeComponent();
        }
        public class Foo
        {
            public static int validacion = 0;
            public static string nombrevalidacion;
        }

        private void CreateCiu_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(NombreCiudad.Text))
            {
                MessageBox.Show("Debe ingresar un nombre para la ciudad a crear");
            }
            else if (Foo.validacion == 0)
            {
                MessageBox.Show("Debe validar el nombre de la ciudad ingresada!");
                return;
            }
            else if (NombreCiudad.Text != Foo.nombrevalidacion)
            {
                MessageBox.Show("El nombre ingresado es distinto al que validó. Vuelva a validar el nombre.");
            }
            else
            {
                int alta = 0;
                if (radioButton1.Checked == true)
                {
                    alta = 1;
                }
                DialogResult dialogResult = MessageBox.Show("¿Desea crear la ciudad " + NombreCiudad.Text + " ?", "Alta ciudad", MessageBoxButtons.YesNo);
                if (dialogResult == DialogResult.Yes)
                {
                    DBManager db = new DBManager();
                    SqlCommand consulta = new SqlCommand("INSERT INTO ALL_IN.ciudad values('" + NombreCiudad.Text + "','" + alta + "')");
                    db.executeQuery(consulta);
                    MessageBox.Show("Se a creado la ciudad " + NombreCiudad.Text);
                    NombreCiudad.Text = "";
                    db.desconectar();
                }

            }

        }

        private void CrearCiudad_Click(object sender, EventArgs e)
        {
            dataGridView1.Visible = false;
            comboBox2.Visible = false;
            label6.Visible = false;
            button1.Visible = false;
            textBox1.Enabled = false;
            NombreCiudad.Enabled = true;
            ModNombre.Visible = false;
            ValidarNombre.Visible = true;
            CreateC.Visible = true;
            CrearCiudad.Visible = true;
            NombreCiudad.Visible = true;
            NombreCiudad.Text = "";
            label2.Visible = true;
            groupBox1.Visible = true;
            comboBox1.Visible = false;
            label4.Visible = false;
            textBox1.Visible = false;
            label5.Visible = false;
            Guardar.Visible = false;
        }

        private void Ciudad_Load(object sender, EventArgs e)
        {
            dataGridView1.ReadOnly = true;
            dataGridView1.AllowUserToAddRows = false;
            dataGridView1.AllowUserToDeleteRows = false;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (NombreCiudad.Enabled == true)
            {
                if (NombreCiudad.Text != "")
                {
                    DBManager db = new DBManager();
                    SqlCommand consulta = new SqlCommand("select ALL_IN.existeCiudad('" + NombreCiudad.Text + "')");
                    SQLResponse r = db.executeQuery(consulta);
                    if (r.result.Rows[0][0].ToString() == "True")
                    {
                        MessageBox.Show("Este nombre ya esta en uso!. Por favor eliga otro nombre.");
                        NombreCiudad.Text = "";
                        Foo.validacion = 0;
                    }
                    else
                    {
                        MessageBox.Show("Esta habilitado para usar este nombre para la nueva ciudad.");
                        Foo.validacion = 1;
                        Foo.nombrevalidacion = NombreCiudad.Text;
                    }
                    db.desconectar();
                }
                else
                {
                    MessageBox.Show("Debe ingresar un nombre a validar.");
                }
            }
            else if (textBox1.Enabled == true)
            {
                if (textBox1.Text != "")
                {
                    DBManager db = new DBManager();
                    SqlCommand consulta = new SqlCommand("select ALL_IN.existeCiudad('" + textBox1.Text + "')");
                    SQLResponse r = db.executeQuery(consulta);
                    if (r.result.Rows[0][0].ToString() == "True")
                    {
                        MessageBox.Show("Este nombre ya esta en uso!. Por favor eliga otro nombre.");
                        textBox1.Text = "";
                        Foo.validacion = 0;
                    }
                    else
                    {
                        MessageBox.Show("Esta habilitado para usar este nombre para la nueva ciudad.");
                        Foo.validacion = 1;
                        Foo.nombrevalidacion = textBox1.Text;
                    }
                    db.desconectar();
                }
                else
                {
                    MessageBox.Show("Debe ingresar un nombre a validar.");
                }
                
            }
        }

        private void ModificarCiudad_Click(object sender, EventArgs e)
        {
            dataGridView1.Visible = false;
            comboBox2.Visible = true;
            label6.Visible = true;
            button1.Visible = true;
            textBox1.Text = "";
            ModNombre.Visible = true;
            comboBox1.Visible = true;
            label4.Visible = true;
            textBox1.Visible = true;
            textBox1.Enabled = false;
            label5.Visible = true;
            Guardar.Visible = true;
            groupBox1.Visible = true;
            label2.Visible = false;
            NombreCiudad.Visible = false;
            NombreCiudad.Enabled = false;
            ValidarNombre.Visible = true;
            CreateC.Visible = false;
            comboBox1.Items.Clear();
            comboBox1.Text = "";
            comboBox2.Items.Clear();
            comboBox2.Text = "";
            DBManager db = new DBManager();
            SqlCommand consulta = new SqlCommand("select nombre from ALL_IN.ciudad where habilitado=1");
            SQLResponse r = db.executeQuery(consulta);
            SqlCommand consulta2 = new SqlCommand("select count (*) from ALL_IN.ciudad where habilitado=1");
            SQLResponse r2 = db.executeQuery(consulta2);
            int valor = (int)r2.result.Rows[0][0];
            for (int i = 0; i < valor; i++)
            {
                comboBox1.Items.Add(r.result.Rows[i][0].ToString());
            }
            SqlCommand consulta3 = new SqlCommand("select nombre from ALL_IN.ciudad where habilitado=0");
            SQLResponse r3 = db.executeQuery(consulta3);
            SqlCommand consulta4 = new SqlCommand("select count (*) from ALL_IN.ciudad where habilitado=0");
            SQLResponse r4 = db.executeQuery(consulta4);
            int valor2 = (int)r4.result.Rows[0][0];
            for (int i = 0; i < valor2; i++)
            {
                comboBox2.Items.Add(r3.result.Rows[i][0].ToString());
            }


            db.desconectar();

        }

        private void Guardar_Click(object sender, EventArgs e)
        {
            if (comboBox1.Text == "")
            {
                MessageBox.Show("Debe seleccionar una ciudad a modificar");
            }
            else if (textBox1.Enabled == true && Foo.validacion == 0)
            {
                MessageBox.Show("Debe validar el nombre de la ciudad ingresada!");
                return;
            }
            else if (textBox1.Enabled == true && (textBox1.Text != Foo.nombrevalidacion))
            {
                MessageBox.Show("El nombre ingresado es distinto al que validó. Vuelva a validar el nombre.");
                return;
            }
            else if (textBox1.Enabled == true && textBox1.Text != "")
            {
                if (radioButton1.Checked == true)
                {
                    /*Si hay que cambiar el nombre y sigue estando habilitado*/
                    DBManager db = new DBManager();
                    SqlCommand consulta = new SqlCommand("exec ALL_IN.cambiarCiudad @ciudad_old = '" + comboBox1.Text + "', @ciudad_new = '" + textBox1.Text + "'");
                    db.executeQuery(consulta);
                    MessageBox.Show("Se ha modificado el nombre de la ciudad.");
                    comboBox1.Items.Clear();
                    comboBox1.Text = "";
                    textBox1.Text = "";
                    SqlCommand consulta2 = new SqlCommand("select nombre from ALL_IN.ciudad where habilitado=1");
                    SQLResponse r2 = db.executeQuery(consulta2);
                    SqlCommand consulta3 = new SqlCommand("select count (*) from ALL_IN.ciudad where habilitado=1");
                    SQLResponse r3 = db.executeQuery(consulta3);
                    int valor = (int)r3.result.Rows[0][0];
                    for (int i = 0; i < valor; i++)
                    {
                        comboBox1.Items.Add(r2.result.Rows[i][0].ToString());
                    }


                    db.desconectar();
                }
                else
                {
                    //TO DO Baja del recorrido, no solo en forma logica, agregar en tabla de cancelaciones
                    //Si se cambia el nombre y se deshabilita la ciudad, y por lo tanto el recorrido y todo lo demas
                    DBManager db = new DBManager();
                    SqlCommand consulta = new SqlCommand("exec ALL_IN.cambiarCiudad @ciudad_old = '" + comboBox1.Text + "', @ciudad_new = '" + textBox1.Text + "'");
                    db.executeQuery(consulta);
                    SqlCommand consulta5 = new SqlCommand("exec ALL_IN.BajaCiudad @ciudad = '" + textBox1.Text + "'");
                    db.executeQuery(consulta5);
                    MessageBox.Show("Se ha modificado el nombre de la ciudad y se ha generado la baja del mismo.");
                    comboBox1.Items.Clear();
                    comboBox1.Text = "";
                    textBox1.Text = "";
                    comboBox2.Items.Clear();
                    comboBox2.Text = "";
                    SqlCommand consulta2 = new SqlCommand("select nombre from ALL_IN.ciudad where habilitado=1");
                    SQLResponse r2 = db.executeQuery(consulta2);
                    SqlCommand consulta3 = new SqlCommand("select count (*) from ALL_IN.ciudad where habilitado=1");
                    SQLResponse r3 = db.executeQuery(consulta3);
                    int valor = (int)r3.result.Rows[0][0];
                    for (int i = 0; i < valor; i++)
                    {
                        comboBox1.Items.Add(r2.result.Rows[i][0].ToString());
                    }
                    SqlCommand consulta6 = new SqlCommand("select nombre from ALL_IN.ciudad where habilitado=0");
                    SQLResponse r6 = db.executeQuery(consulta6);
                    SqlCommand consulta7 = new SqlCommand("select count (*) from ALL_IN.ciudad where habilitado=0");
                    SQLResponse r7 = db.executeQuery(consulta7);
                    int valor7 = (int)r7.result.Rows[0][0];
                    for (int i = 0; i < valor7; i++)
                    {
                        comboBox2.Items.Add(r6.result.Rows[i][0].ToString());
                    }

                    db.desconectar();
                }

            }
            else if (textBox1.Enabled == true && textBox1.Text == "")
            {
                MessageBox.Show("Debe Ingresar un nuevo nombre para la ciudad.");
                return;
            }
            else if(textBox1.Enabled == false)
            {
                //TO DO Baja del recorrido, no solo en forma logica, agregar en tabla de cancelaciones
                //No se modifica el nombre, solo deshabilita la ciudad, y por lo tanto el recorrido y todo lo demas
                DBManager db = new DBManager();
                SqlCommand consulta = new SqlCommand("exec ALL_IN.BajaCiudad @ciudad = '" + comboBox1.Text + "'");
                db.executeQuery(consulta);
                MessageBox.Show("Se dio de baja a la ciudad " + comboBox1.Text);
                comboBox1.Items.Clear();
                comboBox1.Text = "";
                comboBox2.Items.Clear();
                comboBox2.Text = "";
                SqlCommand consulta2 = new SqlCommand("select nombre from ALL_IN.ciudad where habilitado=1");
                SQLResponse r2 = db.executeQuery(consulta2);
                SqlCommand consulta3 = new SqlCommand("select count (*) from ALL_IN.ciudad where habilitado=1");
                SQLResponse r3 = db.executeQuery(consulta3);
                int valor = (int)r3.result.Rows[0][0];
                for (int i = 0; i < valor; i++)
                {
                    comboBox1.Items.Add(r2.result.Rows[i][0].ToString());
                }
                SqlCommand consulta6 = new SqlCommand("select nombre from ALL_IN.ciudad where habilitado=0");
                SQLResponse r6 = db.executeQuery(consulta6);
                SqlCommand consulta7 = new SqlCommand("select count (*) from ALL_IN.ciudad where habilitado=0");
                SQLResponse r7 = db.executeQuery(consulta7);
                int valor7 = (int)r7.result.Rows[0][0];
                for (int i = 0; i < valor7; i++)
                {
                    comboBox2.Items.Add(r6.result.Rows[i][0].ToString());
                }

                db.desconectar();
            }

        }

        private void ModNombre_Click(object sender, EventArgs e)
        {
            if (textBox1.Enabled == false)
            {
                textBox1.Enabled = true;
                MessageBox.Show("Debera validar el nombre ingresado dandole click a Validar Nombre, antes de poder guardar los datos.");
            }
            else
            {
                textBox1.Enabled = false;
            }

            
        }

        private void button1_Click_1(object sender, EventArgs e)
        {
                DBManager db = new DBManager();
                SqlCommand consulta = new SqlCommand("exec ALL_IN.HabilitarCiudad @ciudad = '" + comboBox2.Text + "'");
                db.executeQuery(consulta);
                MessageBox.Show("Se habilitó la ciudad " + comboBox2.Text + " junto con sus recorridos.");
                comboBox1.Items.Clear();
                comboBox1.Text = "";
                comboBox2.Items.Clear();
                comboBox2.Text = "";
                SqlCommand consulta2 = new SqlCommand("select nombre from ALL_IN.ciudad where habilitado=1");
                SQLResponse r2 = db.executeQuery(consulta2);
                SqlCommand consulta3 = new SqlCommand("select count (*) from ALL_IN.ciudad where habilitado=1");
                SQLResponse r3 = db.executeQuery(consulta3);
                int valor = (int)r3.result.Rows[0][0];
                for (int i = 0; i < valor; i++)
                {
                    comboBox1.Items.Add(r2.result.Rows[i][0].ToString());
                }
                SqlCommand consulta6 = new SqlCommand("select nombre from ALL_IN.ciudad where habilitado=0");
                SQLResponse r6 = db.executeQuery(consulta6);
                SqlCommand consulta7 = new SqlCommand("select count (*) from ALL_IN.ciudad where habilitado=0");
                SQLResponse r7 = db.executeQuery(consulta7);
                int valor7 = (int)r7.result.Rows[0][0];
                for (int i = 0; i < valor7; i++)
                {
                    comboBox2.Items.Add(r6.result.Rows[i][0].ToString());
                }

                db.desconectar();
           

        }

        private void button2_Click(object sender, EventArgs e)
        {
            dataGridView1.Rows.Clear();
            comboBox2.Visible = false;
            label6.Visible = false;
            button1.Visible = false;
            textBox1.Enabled = false;
            NombreCiudad.Enabled = false;
            ModNombre.Visible = false;
            ValidarNombre.Visible = false;
            CreateC.Visible = false;
            NombreCiudad.Visible = false;
            label2.Visible = false;
            groupBox1.Visible = false;
            comboBox1.Visible = false;
            label4.Visible = false;
            textBox1.Visible = false;
            label5.Visible = false;
            Guardar.Visible = false;
            dataGridView1.Visible = true;
            DBManager db = new DBManager();
            //SqlDataAdapter a = new SqlDataAdapter("select * from ciudad", );
            SqlCommand consulta = new SqlCommand("select * from ALL_IN.ciudad");
            SQLResponse r = db.executeQuery(consulta);
            SqlCommand consulta2 = new SqlCommand("select count (*) from ALL_IN.ciudad");
            SQLResponse r2 = db.executeQuery(consulta2);
            int valor = (int)r2.result.Rows[0][0];
            for (int i = 0; i < valor; i++)
            {
                dataGridView1.Rows.Add(r.result.Rows[i][0].ToString(), r.result.Rows[i][1].ToString());
                //dataGridView1.Rows[0].Cells[i] = (r.result.Rows[i][0].ToString());
            }
 
        }

        private void NombreCiudadKey(object sender, KeyPressEventArgs e)
        {
            int i = e.KeyChar;
            if ((i >= 65 && i <= 90) || (i >= 97 && i <= 122) || i == 8 || i == 13)
            {
            }
            else
            {
                MessageBox.Show("Solo estan permitidas letras.");
                e.Handled = true;
            }
        }

        private void textBox1Key(object sender, KeyPressEventArgs e)
        {
            int i = e.KeyChar;
            if ((i >= 65 && i <= 90) || (i >= 97 && i <= 122) || i == 8 || i == 13)
            {
            }
            else
            {
                MessageBox.Show("Solo estan permitidas letras.");
                e.Handled = true;
            }
        }

        private void radioButton2_CheckedChanged(object sender, EventArgs e)
        {

        }


    }
}
